/*
 * liense自己看着办吧，能在代码说明引用了此项目就不错了
 */
package com.kris;

import java.util.Vector;
import javax.swing.table.DefaultTableModel;

/**
 * 用于界面上的路径映射表的数据模型。因为Swing是MVC架构。
 *
 * @author kris
 */
public class PathMappingTableModel extends DefaultTableModel {

    public PathMappingTableModel() {
        super(new String[]{"本地路径", "远程路径"}, 0);
    }

    @Override
    public int getColumnCount() {
        // 2列：本地路径和远程路径
        return 2;
    }

    /**
     * 使用原始的removeRow方法会导致数组越界异常，因为每删除一行，<br>
     * 则Vector中的索引重新排列。 所以本方法采用过滤的方式，来排除删除的行
     *
     * @param rows
     */
    public void removeSelectedRows(int[] rows) {
        Vector allData = this.getDataVector();
        Vector newData = new Vector();
        for (int i = 0; i < allData.size(); i++) {
            boolean del = false;
            for (int idx : rows) {
                if (i == idx) {
                    del = true;
                    break;
                }
            }

            if (!del) {
                newData.add(allData.get(i));
            }
        }
        this.setDataVector(newData, columnIdentifiers);
    }

    public void removeAll() {
        this.dataVector.clear();
        this.fireTableDataChanged();
    }

    // Find if the local path already exists in the mapping table
    public boolean exists(String path) {
        for (int i = 0; i < this.getRowCount(); i++) {
            String localPath = (String) this.getValueAt(i, 0);
            if (localPath.equals(path)) {
                return true;
            }
        }
        return false;
    }
}
